package anim.animacije;

import java.awt.Point;

import anim.Animator;
import anim.objekti.Objekat;
/**
 * @author Aleksandar Stancic
 */
public class PremjestiNLin implements Animacija {
	private Point npoz = null, ppoz = null;
	private Objekat obj = null;
	private boolean prvi = true;
	
	private long brKoraka = 0;
	private long tKorak = 0;
	private static final double cilj = 0.01f;
	private double koef = 0.8f;
	private double x = 0.0, y = 0.0;
	
	public PremjestiNLin(Objekat o, Point p, long vrijeme)
	{
		obj = o;
		npoz = p;
		
		brKoraka = vrijeme / Animator.POCETNI_INTERVAL;
		
		koef = 1.0 - Math.pow(cilj, (1.0 / (double)brKoraka));
	}
	
	@Override
	public boolean otkucaj() {
		if(prvi)
		{
			ppoz = obj.getPozicija();
			x = ppoz.x;
			y = ppoz.y;
			prvi = false;
			return true;
		}
		else
		{
			if(tKorak >= brKoraka)
			{
				obj.setPozicija(npoz);
				return false;
			}
			else
			{
				tKorak++;
				
				double deltaX = (npoz.x - x) * koef;
				double deltaY = (npoz.y - y) * koef;
				
				x += deltaX;
				y += deltaY;
				
				obj.setPozicija(new Point((int)x, (int)y));
				return true;
			}
		}
	}

}
